package com.york.tinyrpc.protoss.fault.retry;

import com.york.tinyrpc.protoss.spi.SpiLoader;

/**
 * 使用SPI机制加载重试策略
 */
public class RetryStrategyFactory {

    /**
     * 静态代码块赋值
     */
    static {
        SpiLoader.load(RetryStrategy.class);
    }

    /**
     * 提供默认的重试策略是固定时间间隔
     */
    private static final RetryStrategy DEFAULT_RETRY_STRATEGY = new FixedIntervalRetryStrategy();

    /**
     * 获取指定重试策略
     */
    public static RetryStrategy getRetryStrategyByType(String retryStrategyType) {
        return SpiLoader.getInstance(RetryStrategy.class, retryStrategyType);
    }
}
